package javaTeste.tInstancia;

import java.Argumento;
import java.atributo.Atributo;
import java.classe.Classe;
import java.instancia.InstanciaObjeto;

import junit.framework.Assert;

import org.junit.Before;
import org.junit.Test;


public class TesteInstanciasDeClasses implements Especificacao {
	InstanciaObjeto classeAgua = null;

	InstanciaObjeto atributoP = null;

	InstanciaObjeto NULL = null;

	@Before
	public void up() {
		classeAgua = new InstanciaObjeto(new Classe("Agua"));
		try {
			atributoP = new InstanciaObjeto(new Atributo(new Classe("Agua"),
					"p"));
		} catch (Exception e) {
			e.printStackTrace();
		}
		NULL = new InstanciaObjeto();

	}

	@Test
	public void classeAgua() {
		Assert.assertEquals("new Agua()", classeAgua.codigoFonte());

	}

	@Test
	public void classeAguaConstrutorArgumento10() {
		classeAgua.addArgumento(new Argumento("10"));
		Assert.assertEquals("new Agua(10)", classeAgua.codigoFonte());
	}

	@Test
	public void classeAguaConstrutorArgumento10_20() {
		classeAgua.addArgumento(new Argumento("10"));
		classeAgua.addArgumento(new Argumento("20"));
		Assert.assertEquals("new Agua(10, 20)", classeAgua.codigoFonte());
	}

	@Test
	public void instaciaAtributoP_TipoAgua() {
		Assert.assertEquals("p = new Agua()", atributoP.codigoFonte());
	}

	@Test
	public void instaciaClasseAgua() {
		Assert.assertEquals("new Agua()", classeAgua.codigoFonte());
	}

	@Test
	public void instaciaNULL() {
		Assert.assertEquals("null", NULL.codigoFonte());

	}

}
